home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1997 #3 / Amiga Plus CD - 1997 - No. 03.iso / pd / programmierung / alienbreed3d2_src / cheesesauce / password_reloc.s < prev    next >
Text File  |  1997-01-31  |  5KB  |  292 lines

  1.     opt    C-
  2.  
  3. **********************************************************
  4. CHECKFLG    =    0        ;1 = TO GENERATE CODE-TABLE!!!
  5. **********************************************************
  6. TABLESIZE    =    7*2
  7. MODIFIERA    =    999
  8. MODIFIERB    =    700
  9. **********************************************************
  10. SPfix    =    -30
  11. SPflt    =    -36
  12. SPcmp    =    -42
  13. SPtst    =    -48
  14. SPabs    =    -54
  15. SPneg    =    -60
  16. SPadd    =    -66
  17. SPsub    =    -72
  18. SPmul    =    -78
  19. SPdiv    =    -84
  20. ********************************************
  21.     
  22. pass_main:    BSR    OPENMATHLIB
  23.     tst.l mathbase
  24.     ble nomath
  25.  
  26. ;    move.l    #17,row        ;1-17        just to test!
  27. ;    move.l    #2,col        ;1-50
  28. ;    move.l    #2*2,tableadd    ;A-F
  29.  
  30.     BSR    getrowcolrandom
  31.  
  32.  
  33.  IFNE    CHECKFLG
  34.      lea row(pc),a0
  35.     move.l    #1,(a0)
  36.      lea col(pc),a0
  37.     move.l    #1,(a0)
  38.     lea tableadd,a0
  39.     move.l    #1*2,(a0)
  40.     lea    checktab,a3
  41.  ENDC
  42. .lp:
  43.     lea    tabletab-2,a4
  44.     add.l    tableadd,a4
  45.     lea    scratchpad,a5
  46.     move.l    mathbase,a6
  47.  
  48.     BSR    PART1            ;ROW*ROW*COL*COL*A
  49.     add.w    #TABLESIZE,a4
  50.     BSR    PART2            ;ROW*ROW*COL*B
  51.     add.w    #TABLESIZE,a4
  52.     BSR    PART3            ;COL*ROW*C
  53.     add.w    #TABLESIZE,a4
  54.     BSR    PART4            ;COL*D
  55.     add.w    #TABLESIZE,a4
  56.     BSR    PART5            ;ROW*E
  57.     add.w    #TABLESIZE,a4
  58.     BSR    PART6            ;+F
  59.     BSR    GETMOD
  60.  
  61.     move.l    mathbase,a6
  62.     jsr    spfix(a6)
  63.  
  64.     sub.l    #999,d0
  65.     neg.l    d0
  66.     lea code(pc),a0
  67.     move.l    d0,(a0)
  68.  
  69.  IFNE    CHECKFLG
  70.     move.l    d0,(a3)+
  71.     lea col(pc),a0
  72.     addq.l    #1,(a0)
  73.     cmp.l    #17,(a0)
  74.     bls    .lp
  75.     clr.l    (a0)
  76.     lea row,a0
  77.     addq.l    #1,(a0)
  78.     cmp.l    #50,(a0)
  79.     bls    .lp
  80.  ENDC
  81.  
  82. ***************
  83.     BSR    CLOSEMATHLIB
  84.     move.l    code,d0
  85.     move.l    row,d1
  86.     move.l  col,d2
  87.     move.l  tableadd,d3
  88.     rts
  89.     nomath:
  90.     move.l #-1,d0
  91.     move.l d0,d1
  92.     move.l d1,d2
  93.     move.l d2,d3
  94.     rts
  95. code:    dc.l    0
  96. getrowcolrandom:
  97. j:    
  98.     move.l #$dff000,a0
  99.     move.b    7(a0),d0
  100.     move.b    6(a0),d1
  101.     add.b    d1,d0
  102.     add.b    d0,d1
  103.     add.b    $b(a0),d0
  104.     sub.b    $a(a0),d1
  105.  
  106.  
  107.     move.b    d0,d2
  108.     sub.b    d1,d2
  109.  
  110.     add.b    d0,d1
  111.     and.l    #63,d0
  112.     cmp.w    #49,d0
  113.     blo    .ok
  114.     sub.w    #49,d0
  115. .ok:    addq.w    #1,d0
  116.     lea col(pc),a0
  117.     move.l    d0,(a0)
  118.     and.l    #31,d1
  119.     cmp.w    #17,d1
  120.     blo    .ok2
  121.     sub.w    #17,d1
  122. .ok2:    addq.w    #1,d1
  123.     lea row(pc),a0
  124.     move.l    d1,(a0)
  125.  
  126.     and.l    #7,d2
  127.     cmp.w    #6,d2
  128.     blo    .ok3
  129.     subq.w    #6,d2
  130. .ok3:    addq.w    #1,d2
  131.     add.w    d2,d2
  132.     lea tableadd(pc),a0
  133.     move.l    d2,(a0)
  134.     rts
  135.  
  136. part1:****************************** ROW*COL*COL*A
  137.     move.l    row,d0
  138.     jsr    spflt(a6)
  139.     lea rowflt(pc),a0
  140.     move.l    d0,(a0)
  141. ;    move.l    d0,d1
  142. ;    jsr    spmul(a6)        ;ROW*ROW
  143.     move.l    d0,d6
  144. ********
  145.     move.l    col,d0
  146.     jsr    spflt(a6)
  147.     lea colflt(pc),a0
  148.     move.l    d0,(a0)
  149.     move.l    d0,d1
  150.     jsr    spmul(a6)        ;*COL
  151.     move.l    d6,d1
  152.     jsr    spmul(a6)        ;*COL
  153.     move.l    d0,d6
  154. ********
  155.     moveq    #0,d0
  156.     move.w    (a4),d0
  157.     jsr    spflt(a6)
  158.     move.l    d6,d1
  159.     jsr    spmul(a6)
  160.     move.l    d0,(a5)
  161. **************************************
  162.     rts
  163.  
  164. part2:****************************** ROW*ROW*COL*B
  165.     move.l    rowflt,d0
  166.     move.l    d0,d1
  167.     jsr    spmul(a6)        ;ROW*ROW
  168.     move.l    d0,d1
  169.  
  170.     move.l    colflt,d0
  171.     jsr    spmul(a6)        ;*COL
  172.     move.l    d0,d6
  173. ********
  174.     moveq    #0,d0
  175.     move.w    (a4),d0
  176.     jsr    spflt(a6)
  177.     move.l    d6,d1
  178.     jsr    spmul(a6)        ;*B
  179.  
  180.     move.l    (a5),d1
  181.     jsr    spadd(a6)
  182.     move.l    d0,(a5)
  183. ********
  184.     rts
  185. part3:****************************** COL*ROW*C
  186.     move.l    colflt,d0
  187.     move.l    rowflt,d1
  188.     jsr    spmul(a6)        ;COL*ROW
  189.     move.l    d0,d6
  190. ********
  191.     moveq    #0,d0
  192.     move.w    (a4),d0
  193.     jsr    spflt(a6)
  194.     move.l    d6,d1
  195.     jsr    spmul(a6)        ;*C
  196.  
  197.     move.l    (a5),d1
  198.     jsr    spadd(a6)
  199.     move.l    d0,(a5)
  200. ********
  201.     rts
  202. part4:****************************** 
  203.     moveq    #0,d0
  204.     move.w    (a4),d0
  205.     jsr    spflt(a6)
  206.     move.l    colflt,d1
  207.     jsr    spmul(a6)        ;COL*D
  208.  
  209.     move.l    (a5),d1
  210.     jsr    spadd(a6)
  211.     move.l    d0,(a5)
  212. ********
  213.     rts
  214.  
  215. part5:****************************** 
  216.     moveq    #0,d0
  217.     move.w    (a4),d0
  218.     jsr    spflt(a6)
  219.     move.l    rowflt,d1
  220.     jsr    spmul(a6)        ;ROW*E
  221.  
  222.     move.l    (a5),d1
  223.     jsr    spadd(a6)
  224.     move.l    d0,(a5)
  225. ********
  226.     rts
  227. part6:****************************** 
  228.     moveq    #0,d0
  229.     move.w    (a4),d0
  230.     jsr    spflt(a6)        ;+ F
  231.     move.l    (a5),d1
  232.     jsr    spadd(a6)
  233.     move.l    d0,(a5)
  234. ********
  235.     rts
  236.  
  237.  
  238.  
  239. getmod:*************************** GET MODULUS!!
  240.     move.l    (a5),d6
  241.     move.l    #MODIFIERB,d0
  242.     jsr    spflt(a6)
  243.     move.l    d0,d5
  244.     move.l    d0,d1
  245.     move.l    d6,d0
  246.     jsr    spdiv(a6)
  247.     jsr    spfix(a6)
  248.     jsr    spflt(a6)
  249.     move.l    d5,d1
  250.     jsr    spmul(a6)
  251.     move.l    d0,d1
  252.     move.l    d6,d0
  253.     jsr    spsub(a6)
  254. ***************
  255.     rts
  256. col:        dc.l    0
  257. row:        dc.l    0
  258. tableadd:    dc.l    0
  259. colflt:        dc.l    0
  260. rowflt:        dc.l    0
  261. scratchpad:    dcb.l    16,0
  262. openmathlib:
  263.     lea    mathname,a1
  264.     move.l #$4,a0
  265.     move.l (a0),a6
  266.     jsr    -408(a6)
  267.     lea mathbase(pc),a0
  268.     move.l    d0,(a0)
  269.     rts
  270. closemathlib:
  271.     move.l    mathbase,a1
  272.     move.l #$4,a0
  273.     move.l (a0),a6
  274.     jsr    -414(a6)
  275.     rts
  276. tabletab:                    ;parameters
  277.     dc.w    073,165,111,005,123,088,046
  278.     dc.w    068,094,024,094,032,077,054
  279.     dc.w    024,037,158,066,045,103,091
  280.     dc.w    042,012,099,027,054,066,067
  281.     dc.w    006,055,075,035,034,091,033
  282.     dc.w    097,046,083,049,022,038,028
  283.  
  284. mathbase:    dc.l    0
  285. mathname:    dc.b    'mathffp.library',0
  286.  
  287.  EVEN
  288.  IFNE    CHECKFLG
  289.  checktab:    dcb.l    850,0
  290.  ENDC
  291.  
  292.  opt C+